package practice;

/**
 * 扫描指定⽬录，并找到名称中包含指定字符的所有普通⽂件（不包含⽬录），并且后续询问⽤⼾是否
 * 要删除该⽂件
 */

import java.io.File;
import java.io.IOException;
import java.util.Locale;
import java.util.Scanner;

/**
 * 1.询问用户要指定的目录
 * 2.创建文件对象，校验一下用户给的目录是否存在，且是一个目录（不是文件）
 * 3.询问用户需要查询的文件名称
 * 4.校验改文件名称是否有效
 * 4.查看目录下的目录和文件，如果是目录进入目录继续查找，是文件的话对比是否包含指定字符
 * 5.找到文件，询问客户是否要删除文件
 * 6.用户确认删除执行删除操作
 */
public class DEMO_01 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查看的目录路径");
        String path = scanner.nextLine();
        File file = new File(path);
        if (!file.exists()) {
            System.out.println("你输入的目录不存在 ");
            return;
        }
        if (!file.isDirectory()) {
            System.out.println("你输入的不是一个目录");
            return;
        }
        System.out.println("请输入你要查询的文件名称");
        String name = scanner.nextLine();
        if (name.isBlank() || name.isEmpty()) {
            System.out.println("你输入的文件名称不合法");
            return;
        }
        findFile2(name, file);

    }

    public static void findFile1(String name, File file) throws IOException {
        File[] files = file.listFiles();
        if (files.length == 0) {
            return;
        } else {
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    findFile1(name, files[i]);
                } else {
                    if (files[i].getName().contains(name)) {
                        System.out.println(files[i].getCanonicalFile());
                        System.out.println("请问你是否要删除该目录  Y:YES   N:NO");
                        Scanner scanner = new Scanner(System.in);
                        String isDelete = scanner.nextLine();
                        if (isDelete.toLowerCase().equals("y")) {
                            files[i].delete();
                            System.out.println("删除成功");
                        } else if (isDelete.toLowerCase().equals("n")) {

                        } else {
                            System.out.println("不合法输入");
                        }
                    }
                }
            }
        }
    }

    public static void findFile2(String name, File file) throws IOException {
        Scanner scanner = new Scanner(System.in);
        try {

            if (file == null) {
                return;
            } else if (file.isFile()) {
                if (file.getName().contains(name)) {
                    System.out.println(file.getCanonicalFile());
                    System.out.println("请问你是否要删除该目录  Y:YES   N:NO");

                    String isDelete = scanner.nextLine();
                    if (isDelete.toLowerCase().equals("y")) {
                        file.delete();
                        System.out.println("删除成功");
                    } else if (isDelete.toLowerCase().equals("n")) {

                    } else {
                        System.out.println("不合法输入");
                    }
                }
            } else if (file.isDirectory()) {
                File[] files = file.listFiles();
                if (files.length == 0) {
                    return;
                } else {
                    for (int i = 0; i < files.length; i++) {
                        findFile2(name, files[i]);
                    }
                }
            }

        } finally {
            scanner.close();
        }


    }
}
